home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_oth / tasking / doslock.mod < prev    next >
Text File  |  1986-05-20  |  715b  |  31 lines

  1. IMPLEMENTATION MODULE DOSlock;
  2.  
  3.   FROM SYSTEM IMPORT SETREG, GETREG, AX, BX, ES, SWI, ADDRESS;
  4.   FROM Locks IMPORT LockType, Unlock, Lock;
  5.  
  6.   VAR
  7.     criticalSectionPtr: POINTER TO CARDINAL;
  8.     aux: ADDRESS;
  9.     lock: LockType;
  10.  
  11.   PROCEDURE LockDOS;
  12.     BEGIN
  13.       Lock(lock);
  14.       IF criticalSectionPtr^ # 0 THEN HALT END;
  15.     END LockDOS;
  16.  
  17.   PROCEDURE UnlockDOS;
  18.     BEGIN
  19.       IF criticalSectionPtr^ # 0 THEN HALT END;
  20.       Unlock(lock);
  21.     END UnlockDOS;
  22.  
  23.   BEGIN
  24.    Unlock(lock);
  25.    SETREG(AX, 3400H); (* undocumented dos call from page 15-11 of Logitech v2 *)
  26.    SWI(21H);
  27.    GETREG(ES, aux.SEGMENT);
  28.    GETREG(BX, aux.OFFSET);
  29.    criticalSectionPtr := aux;
  30.   END DOSlock.
  31.